package com.shrct.businessprocess.product;

import com.shrct.businessprocess.organization.RCSupplier;
import com.shrct.businessprocess.product.RCFullServiceProductEntry;
import com.shrct.businessprocess.product.RCIdentifiablePhysicalProductEntry;
import com.shrct.businessprocess.product.RCProductServiceTracer;
import com.shrct.businessprocess.product.RCServiceLevel;
import com.shrct.businessprocess.product.RCServiceResponseTime;
import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.purchase.IHasServicePurchase;
import com.shrct.businessprocess.purchase.RCBudgetContract;
import edu.fudan.mylang.pf.IDAOService;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

public interface RCProductServiceTracerDAO extends IDAOService<RCProductServiceTracer> {
  public abstract Collection<RCProductServiceTracer> findByBudgetContract(final RCBudgetContract budgetContract);
  
  public abstract RCProductServiceTracer findByProductAndServiceName(final RCIdentifiablePhysicalProductEntry product, final String serviceName);
  
  public abstract RCProductServiceTracer create(final RCBudgetContract budgetContract, final Procedure1<? super RCProductServiceTracer> tracerInit);
  
  public abstract void delete(final RCProductServiceTracer tracer);
  
  public abstract RCFullServiceProductEntry acceptProductService(final IHasServicePurchase hasServicePurchase, final String name, final String serviceSpec, final String serviceContractCode, final RCSupplier productSupplier, final RCIdentifiablePhysicalProductEntry product, final RCServiceLevel serviceLevel, final RCServiceResponseTime serviceResponseTime, final Date startDate, final Date dueDate, final RCProjectMoney price, final Boolean forPartDevice);
}
